part of '../controller.dart';

class _OneTimePurchaseItemNotificationDataDto extends Equatable implements _NotificationDataDto {
  const _OneTimePurchaseItemNotificationDataDto._internal({
    required this.typeCode,
    required this.purchaseToken,
    required this.purchaseItemSku,
  });

  final int typeCode;
  final String purchaseToken;
  final String purchaseItemSku;

  @override
  List<Object?> get props {
    return [
      typeCode,
      purchaseToken,
      purchaseItemSku,
    ];
  }

  factory _OneTimePurchaseItemNotificationDataDto.fromJson(Map<String, dynamic> json) {
    return _OneTimePurchaseItemNotificationDataDto._internal(
      typeCode: json['notificationType'],
      purchaseToken: json['purchaseToken'],
      purchaseItemSku: json['sku'],
    );
  }

  @override
  GooglePlayApiOneTimePurchaseItemNotificationData toEntity() {
    late final GooglePlayApiOneTimePurchaseItemNotificationType type;

    if (typeCode == 1) {
      type = GooglePlayApiOneTimePurchaseItemNotificationType.purchased;
    } else if (typeCode == 2) {
      type = GooglePlayApiOneTimePurchaseItemNotificationType.canceled;
    }

    return GooglePlayApiOneTimePurchaseItemNotificationData(
      purchaseToken: purchaseToken,
      purchaseItemSku: purchaseItemSku,
      type: type,
    );
  }
}
